// 登录页面
Page({
  data: {
    wechatLoading: false,
    serviceId: null, // 从预约页面传来的服务ID
    returnUrl: null, // 登录后要返回的页面URL
    agreePrivacy: false, // 是否同意隐私协议
  },

  onLoad(options) {
    if (options.serviceId) {
      this.setData({
        serviceId: options.serviceId,
      });
    }
    if (options.returnUrl) {
      this.setData({
        returnUrl: decodeURIComponent(options.returnUrl),
      });
    }
  },

  // 微信一键登录
  async onWechatLogin(e) {
    // 检查是否同意隐私协议
    if (!this.data.agreePrivacy) {
      wx.showToast({
        title: "请阅读并勾选协议之后登录",
        icon: "none",
        duration: 2000,
      });
      return;
    }

    this.setData({ wechatLoading: true });

    try {
      // 1. 获取微信登录code
      const loginRes = await this.getWechatCode();

      if (!loginRes.code) {
        throw new Error("获取微信code失败");
      }

      // 2. 暂时不获取微信用户信息，在完善页面再获取
      let userInfo = {};

      // 3. 调用后端微信登录API
      const { userApi } = require("../../utils/api.js");
      const result = await userApi.wechatLogin({
        code: loginRes.code,
        userInfo: userInfo,
      });

      // 检查是否有用户信息，如果有就认为登录成功
      if (result.data && (result.data.user_info || result.data.id)) {
        // 登录成功，保存用户信息和token
        const userInfo = result.data.user_info || result.data;

        // 确保用户信息包含微信用户信息
        if (userInfo && !userInfo.wechat_user && userInfo.nickname) {
          // 如果后端返回的是扁平结构，转换为嵌套结构
          userInfo.wechat_user = {
            nickname: userInfo.nickname,
            avatar_url: userInfo.avatar_url || userInfo.avatar,
            gender: userInfo.gender,
            language: userInfo.language,
            city: userInfo.city,
            province: userInfo.province,
            country: userInfo.country,
          };
        }

        // 保存用户信息
        wx.setStorageSync("userInfo", userInfo);

        // 保存token
        if (result.data.token) {
          wx.setStorageSync("token", result.data.token);
        }

        wx.showToast({
          title: "登录成功",
          icon: "success",
        });

        // 检查用户信息是否完善
        setTimeout(async () => {
          await this.checkProfileComplete(userInfo);
        }, 1500);
      } else {
        wx.showToast({
          title: result.message || "微信登录失败",
          icon: "none",
        });
      }
    } catch (error) {
      wx.showToast({
        title: error.message || "微信登录失败，请重试",
        icon: "none",
      });
    } finally {
      this.setData({ wechatLoading: false });
    }
  },

  // 隐私协议勾选变化
  onPrivacyAgreeChange(event) {
    this.setData({
      agreePrivacy: event.detail,
    });
  },

  // 获取微信登录code
  getWechatCode() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: (res) => {
          if (res.code) {
            resolve(res);
          } else {
            reject(new Error("获取微信code失败"));
          }
        },
        fail: (error) => {
          reject(error);
        },
      });
    });
  },

  // 获取微信用户信息
  getWechatUserInfo() {
    return new Promise((resolve, reject) => {
      // 使用wx.getUserProfile获取用户信息（需要用户主动授权）
      wx.getUserProfile({
        desc: "用于完善用户资料",
        success: (res) => {
          resolve(res);
        },
        fail: (error) => {
          // 如果用户拒绝授权，返回空信息
          resolve({ userInfo: {} });
        },
      });
    });
  },

  // 跳转到隐私政策页面
  onPrivacyTap() {
    wx.navigateTo({
      url: "/pages/privacy/index",
    });
  },

  // 检查用户信息是否完善
  async checkProfileComplete(userInfo) {
    // 检查用户信息是否已经完善
    const isProfileComplete =
      userInfo &&
      userInfo.nickname &&
      userInfo.avatar &&
      userInfo.nickname !== "微信用户" &&
      userInfo.nickname !== "" &&
      userInfo.avatar !== "";

    // 如果信息已完善，直接跳转首页
    if (isProfileComplete) {
      this.navigateAfterLogin();
      return;
    }

    // 信息不完善，需要检查 perfect_hidden 设置
    try {
      const { settingsApi } = require("../../utils/api.js");
      const settingsResult = await settingsApi.getUserSettings();

      if (settingsResult.code === 0 && settingsResult.data) {
        const perfectHidden = settingsResult.data.perfect_hidden || false;

        // 如果 perfect_hidden 为 true，不跳转完善页面
        if (perfectHidden) {
          console.log("perfect_hidden 为 true，跳过完善信息页面");
          this.navigateAfterLogin();
          return;
        }

        // 如果 perfect_hidden 为 false，跳转到完善页面
        console.log("perfect_hidden 为 false，跳转到完善信息页面");
        const returnUrl = this.data.returnUrl
          ? `?returnUrl=${encodeURIComponent(this.data.returnUrl)}`
          : "";
        wx.redirectTo({
          url: `/pages/completeProfile/index${returnUrl}`,
        });
      } else {
        // 如果获取设置失败，默认跳转到完善页面（保持原有行为）
        console.log("获取用户设置失败，默认跳转到完善信息页面");
        const returnUrl = this.data.returnUrl
          ? `?returnUrl=${encodeURIComponent(this.data.returnUrl)}`
          : "";
        wx.redirectTo({
          url: `/pages/completeProfile/index${returnUrl}`,
        });
      }
    } catch (error) {
      console.error("检查用户设置失败:", error);
      // 出错时默认跳转到完善页面（保持原有行为）
      const returnUrl = this.data.returnUrl
        ? `?returnUrl=${encodeURIComponent(this.data.returnUrl)}`
        : "";
      wx.redirectTo({
        url: `/pages/completeProfile/index${returnUrl}`,
      });
    }
  },

  // 登录后的跳转逻辑
  navigateAfterLogin() {
    // 如果有返回URL，跳转到指定页面
    if (this.data.returnUrl) {
      wx.redirectTo({
        url: this.data.returnUrl,
      });
    } else {
      // 否则跳转到首页
      wx.switchTab({
        url: "/pages/home/index",
      });
    }
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: "甲年华美甲美睫 - 微信登录",
      desc: "使用微信快速登录，享受专业美甲美睫服务",
      path: "/pages/login/index",
      imageUrl: "/images/share-login.jpg",
    };
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    return {
      title: "甲年华美甲美睫 - 微信登录",
      query: "",
      imageUrl: "/images/share-login.jpg",
    };
  },
});
